from rest_framework.viewsets import ReadOnlyModelViewSet
from .models import AreaInfo
from . import serializers
from rest_framework_extensions.cache.mixins import CacheResponseMixin


#当查询多个/一个
class AreaViewSet(CacheResponseMixin,ReadOnlyModelViewSet):
    # queryset = AreaInfo.objects.filter(parent__isnull=True)
    #当查询多个时，需要查询所有的省
    #查询一个时，需要根据主键查询指定的对象，查询范围应该是所有的数据
    #查询多个的方法list
    #查询一个的方法为retrive
    #在视图及对象上，有属性action可以获取方法的名称
    def get_queryset(self):
        if self.action == 'list':
            #查询多个
            return AreaInfo.objects.filter(parent__isnull=True)
        else:
            #查询一个：根据主键查询，需要指定查询范围
            return AreaInfo.objects.all()
    # serializer_class = serializers.AreaSerializer
    #查询多个时，返回省，包含id，name
    #查询一个时，返回地区及子地区，包含id,name,subs,subs中包含的id，name
    def get_serializer_class(self):
        if self.action == 'list':
            return serializers.AreaSerializer
        else:
            return serializers.SubAreaSerializer

